package cn.tedu.mybatis.mapper;

import cn.tedu.mybatis.pojo.*;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface BlogMapper {

    int insert(Blog blog);

//    @Delete("DELETE FROM blog WHERE id=#{id}")
    int deleteById(Integer id);

    /*@Update("UPDATE blog " +
            "SET content=#{content},created=#{created},user_id=#{userId} " +
            "WHERE id=#{id}")*/
    int updateById(Blog blog);

    /*@Select("SELECT id,content,created,user_id userId " +
            "FROM blog " +
            "WHERE id=#{id}")*/
    Blog selectById(Integer id);

    /**
     * 如果查询语句可以查询到多条记录时,我们定义的方法返回值类型应当是一个集合
     * 那么框架会将每条记录转变为一个Blog对象并将他们最终放到一个List集合然后返回
     *
     */

//    @Select("SELECT id,content,created,user_id userId " +
//            "FROM blog")
    List<Blog> selectAll();
    //将来针对某些业务对应的页面展示微博的部分信息
    //返回值类型为BlogVO1,因此MyBatis框架在进行查询
    //绑定数据还是字段名与数据名一致,不一致的要用别名
//    @Select("SELECT content,created FROM blog WHERE id=#{id}")
    BlogVO1 selectBlogVO1ById(Integer id);

//    @Select("SELECT content,user_id userId FROM blog")
    List<BlogVO2> selectAllBlogVO2();
    //测试MyBatis的动态修改操作
    int dynamicUpdateBlogById(Blog blog);

    int dynamicDeleteBlogById(Integer[] ids);

    int dynamicDeleteBlogById2(List<Integer> ids);
    //根据ID查看信息
    BlogVO3 selectResultMap(Integer id);

    BlogVO4 selectBlogAndCommentById(Integer id);
    //统计博客的记录数
    int countBlog();
}
